{
 "cells": [
  {
   "cell_type": "markdown",
   "source": [
    "## read data"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%% md\n"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 76,
   "outputs": [
    {
     "data": {
      "text/plain": "   seawifs_rrs412  seawifs_rrs443  seawifs_rrs490  seawifs_rrs510  \\\n0        0.004684        0.004580        0.003976        0.002848   \n1        0.010744        0.008795        0.006032        0.003241   \n2        0.004212        0.004806        0.006625        0.006604   \n3        0.004451        0.004953        0.005663        0.005642   \n4        0.003378        0.003701        0.004466        0.004142   \n\n   seawifs_rrs555  seawifs_rrs670  insitu_chlor_a  rrs412/rrs443  \\\n0        0.001410       -0.000022         0.17375       1.022707   \n1        0.001549        0.000112         0.06900       1.221603   \n2        0.006209        0.000984         2.09430       0.876404   \n3        0.005284        0.000921         0.96620       0.898647   \n4        0.003531        0.000316         0.71310       0.912726   \n\n   rrs412/rrs490  rrs412/rrs510  rrs412/rrs555  rrs412/rrs670  \n0       1.178068       1.644663       3.321986    -212.909091  \n1       1.781167       3.315026       6.936088      95.928571  \n2       0.635774       0.637795       0.678370       4.280488  \n3       0.785979       0.788905       0.842354       4.832790  \n4       0.756382       0.815548       0.956669      10.689873  ",
      "text/html": "<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>seawifs_rrs412</th>\n      <th>seawifs_rrs443</th>\n      <th>seawifs_rrs490</th>\n      <th>seawifs_rrs510</th>\n      <th>seawifs_rrs555</th>\n      <th>seawifs_rrs670</th>\n      <th>insitu_chlor_a</th>\n      <th>rrs412/rrs443</th>\n      <th>rrs412/rrs490</th>\n      <th>rrs412/rrs510</th>\n      <th>rrs412/rrs555</th>\n      <th>rrs412/rrs670</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>0</th>\n      <td>0.004684</td>\n      <td>0.004580</td>\n      <td>0.003976</td>\n      <td>0.002848</td>\n      <td>0.001410</td>\n      <td>-0.000022</td>\n      <td>0.17375</td>\n      <td>1.022707</td>\n      <td>1.178068</td>\n      <td>1.644663</td>\n      <td>3.321986</td>\n      <td>-212.909091</td>\n    </tr>\n    <tr>\n      <th>1</th>\n      <td>0.010744</td>\n      <td>0.008795</td>\n      <td>0.006032</td>\n      <td>0.003241</td>\n      <td>0.001549</td>\n      <td>0.000112</td>\n      <td>0.06900</td>\n      <td>1.221603</td>\n      <td>1.781167</td>\n      <td>3.315026</td>\n      <td>6.936088</td>\n      <td>95.928571</td>\n    </tr>\n    <tr>\n      <th>2</th>\n      <td>0.004212</td>\n      <td>0.004806</td>\n      <td>0.006625</td>\n      <td>0.006604</td>\n      <td>0.006209</td>\n      <td>0.000984</td>\n      <td>2.09430</td>\n      <td>0.876404</td>\n      <td>0.635774</td>\n      <td>0.637795</td>\n      <td>0.678370</td>\n      <td>4.280488</td>\n    </tr>\n    <tr>\n      <th>3</th>\n      <td>0.004451</td>\n      <td>0.004953</td>\n      <td>0.005663</td>\n      <td>0.005642</td>\n      <td>0.005284</td>\n      <td>0.000921</td>\n      <td>0.96620</td>\n      <td>0.898647</td>\n      <td>0.785979</td>\n      <td>0.788905</td>\n      <td>0.842354</td>\n      <td>4.832790</td>\n    </tr>\n    <tr>\n      <th>4</th>\n      <td>0.003378</td>\n      <td>0.003701</td>\n      <td>0.004466</td>\n      <td>0.004142</td>\n      <td>0.003531</td>\n      <td>0.000316</td>\n      <td>0.71310</td>\n      <td>0.912726</td>\n      <td>0.756382</td>\n      <td>0.815548</td>\n      <td>0.956669</td>\n      <td>10.689873</td>\n    </tr>\n  </tbody>\n</table>\n</div>"
     },
     "metadata": {},
     "output_type": "execute_result",
     "execution_count": 76
    }
   ],
   "source": [
    "import pandas as pd\n",
    "import torch\n",
    "import numpy as np\n",
    "import d2l \n",
    "chlDataFile = r\"E:\\02Projects\\papers\\chl_model\\data\\seawifs\\train_dataset.csv\"\n",
    "datatypes={\"seawifs_chlor_a\":np.float,\"insitu_chlor_a\":np.float,\"depth_water\":np.float}\n",
    "dt = pd.read_csv(chlDataFile,skiprows=(0),header=(0),parse_dates=True,dtype=datatypes)\n",
    "dt = dt\n",
    "# removing index columns\n",
    "dt = dt.iloc[:,1:]\n",
    "dt.head()"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n",
     "is_executing": false
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 77,
   "outputs": [],
   "source": [
    "featureCols = ['seawifs_rrs412','seawifs_rrs443','seawifs_rrs490','seawifs_rrs510','seawifs_rrs555','seawifs_rrs670','rrs412/rrs443','rrs412/rrs490','rrs412/rrs510','rrs412/rrs555','rrs412/rrs670']\n",
    "XSet = dt[featureCols]*1000\n",
    "train_len = 1778\n",
    "features = XSet\n",
    "Yset = pd.DataFrame(data=dt['insitu_chlor_a'])\n",
    "lables = Yset"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n",
     "is_executing": false
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 78,
   "outputs": [],
   "source": [
    "# load data iter mode\n",
    "from torch.utils.data import TensorDataset,DataLoader\n",
    "import torch.nn.functional as F\n",
    "df_tensor = torch.tensor(features.values.astype(np.float32))\n",
    "df_tensor = F.normalize(df_tensor,p=2,dim=0)\n",
    "\n",
    "df_target = torch.tensor(lables.values.astype(np.float32))\n",
    "\n",
    "df_target = F.normalize(df_target,p=2,dim=0)\n",
    "\n",
    "df_train_f = df_tensor[0:train_len]\n",
    "df_train_l = df_target[0:train_len]\n",
    "dataset=TensorDataset(df_train_f,df_train_l)\n",
    "batch_size = 10\n",
    "dataloader = DataLoader(dataset=dataset,batch_size=batch_size,shuffle=True)"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n",
     "is_executing": false
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 79,
   "outputs": [
    {
     "name": "stdout",
     "text": [
      "tensor([[ 3.7953e-02,  3.4700e-02,  2.4417e-02,  1.5583e-02,  7.2576e-03,\n          3.7578e-03,  1.1612e-02,  3.3094e-02,  4.1449e-02,  4.4596e-02,\n          1.1146e-02],\n        [ 2.3958e-03,  6.3066e-03,  1.5013e-02,  2.2311e-02,  3.9950e-02,\n          5.7320e-02,  4.0330e-03,  3.3976e-03,  1.8274e-03,  5.1142e-04,\n          4.6124e-05],\n        [-1.5886e-03,  1.8629e-03,  5.0832e-03,  6.1634e-03,  6.2710e-03,\n          1.0262e-03, -9.0533e-03, -6.6538e-03, -4.3863e-03, -2.1604e-03,\n         -1.7084e-03],\n        [ 4.5941e-02,  4.0492e-02,  2.5086e-02,  1.3711e-02,  5.2621e-03,\n          1.4742e-03,  1.2045e-02,  3.8991e-02,  5.7022e-02,  7.4453e-02,\n          3.4389e-02],\n        [ 6.6161e-03,  8.7039e-03,  1.0268e-02,  1.0559e-02,  7.3376e-03,\n          2.2113e-03,  8.0697e-03,  1.3718e-02,  1.0663e-02,  7.6894e-03,\n          3.3017e-03],\n        [ 2.3800e-02,  2.5139e-02,  2.1356e-02,  1.5139e-02,  7.7421e-03,\n          3.1218e-03,  1.0051e-02,  2.3727e-02,  2.6752e-02,  2.6216e-02,\n          8.4128e-03],\n        [ 5.3349e-02,  4.5183e-02,  2.6940e-02,  1.5004e-02,  5.9866e-03,\n          1.6910e-03,  1.2535e-02,  4.2161e-02,  6.0510e-02,  7.5997e-02,\n          3.4815e-02],\n        [ 1.2488e-02,  1.3894e-02,  1.8168e-02,  2.3727e-02,  3.0782e-02,\n          3.2216e-02,  9.5420e-03,  1.4634e-02,  8.9567e-03,  3.4597e-03,\n          4.2776e-04],\n        [ 6.3102e-03,  1.2505e-02,  2.2575e-02,  3.0012e-02,  3.6044e-02,\n          4.6481e-02,  5.3569e-03,  5.9513e-03,  3.5781e-03,  1.4930e-03,\n          1.4981e-04],\n        [ 1.6078e-02,  1.5162e-02,  1.5009e-02,  1.7314e-02,  2.0604e-02,\n          1.9844e-02,  1.1257e-02,  2.2807e-02,  1.5802e-02,  6.6545e-03,\n          8.9409e-04]]) torch.Size([10, 11])\ntensor([[0.0002],\n        [0.0398],\n        [0.0037],\n        [0.0001],\n        [0.0024],\n        [0.0003],\n        [0.0001],\n        [0.0210],\n        [0.0194],\n        [0.0296]]) torch.Size([10, 1])\n"
     ],
     "output_type": "stream"
    }
   ],
   "source": [
    "for X, y in dataloader:\n",
    "    print(X,X.shape)\n",
    "    print(y,y.shape)\n",
    "    break"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n",
     "is_executing": false
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 85,
   "outputs": [],
   "source": [
    "class LinearRegressionModel(torch.nn.Module): \n",
    "    def __init__(self): \n",
    "        super(LinearRegressionModel, self).__init__() \n",
    "        self.layer1 = torch.nn.Linear(11, 11,bias=True)\n",
    "        self.layer2 = torch.nn.Linear(11, 1,bias=True)\n",
    "    def forward(self, x): \n",
    "        y_pred = self.layer2(self.layer1(x))\n",
    "        return y_pred \n",
    "    \n",
    "net = LinearRegressionModel()\n"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n",
     "is_executing": false
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 86,
   "outputs": [
    {
     "data": {
      "text/plain": "Parameter containing:\ntensor([0.0035], requires_grad=True)"
     },
     "metadata": {},
     "output_type": "execute_result",
     "execution_count": 86
    }
   ],
   "source": [
    "net.layer1.weight.data=torch.Tensor(np.random.normal(size=(11,11),scale=0.01,loc=0))\n",
    "net.layer1.bias.data=torch.Tensor([0])\n",
    "torch.nn.init.normal_(net.layer2.weight,mean=0,std=0.01)\n",
    "torch.nn.init.normal_(net.layer2.bias,mean=0,std=0.01)"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n",
     "is_executing": false
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 87,
   "outputs": [],
   "source": [
    "loss = torch.nn.MSELoss() "
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n",
     "is_executing": false
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 88,
   "outputs": [],
   "source": [
    "trainer = torch.optim.SGD(net.parameters(), lr = 0.03) "
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n",
     "is_executing": false
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 89,
   "outputs": [
    {
     "name": "stdout",
     "text": [
      "epoch 1, loss 0.00034702179254963994\nepoch 2, loss 0.0003470194060355425\nepoch 3, loss 0.00034714367939159274\n",
      "epoch 4, loss 0.00034768605837598443\nepoch 5, loss 0.0003479170554783195\nepoch 6, loss 0.0003473635297268629\nepoch 7, loss 0.00034743137075565755",
      "\nepoch 8, loss 0.0003469834919087589\nepoch 9, loss 0.00035166493034921587\n",
      "epoch 10, loss 0.00035254043177701533\nepoch 11, loss 0.00034722674172371626\nepoch 12, loss 0.0003470253723207861\nepoch 13, loss 0.00034807465272024274\n",
      "epoch 14, loss 0.00034764318843372166\nepoch 15, loss 0.0003478159196674824\nepoch 16, loss 0.0003480426676105708\n",
      "epoch 17, loss 0.0003487213980406523\nepoch 18, loss 0.00034724274883046746\nepoch 19, loss 0.00034705863799899817\nepoch 20, loss 0.0003471202217042446",
      "\nepoch 21, loss 0.00034693186171352863\nepoch 22, loss 0.0003476901038084179",
      "\nepoch 23, loss 0.00034746548044495285\nepoch 24, loss 0.0003470045339781791\nepoch 25, loss 0.0003469531366135925\n",
      "epoch 26, loss 0.0003478370199445635\nepoch 27, loss 0.0003485135093796998\nepoch 28, loss 0.0003469488874543458\n",
      "epoch 29, loss 0.0003471366362646222\nepoch 30, loss 0.0003468804934527725\nepoch 31, loss 0.0003471666423138231\n",
      "epoch 32, loss 0.0003507871588226408\nepoch 33, loss 0.0003480813466012478\nepoch 34, loss 0.00034977096947841346",
      "\nepoch 35, loss 0.00034790579229593277\nepoch 36, loss 0.00034871840034611523\nepoch 37, loss 0.0003492046089377254\n",
      "epoch 38, loss 0.00034707944723777473\nepoch 39, loss 0.0003484997432678938\n",
      "epoch 40, loss 0.0003468471113592386\nepoch 41, loss 0.00034766524913720787\nepoch 42, loss 0.0003468995855655521\n",
      "epoch 43, loss 0.00034816504921764135\nepoch 44, loss 0.0003476841957308352\nepoch 45, loss 0.0003470421943347901\n",
      "epoch 46, loss 0.00034781525027938187\nepoch 47, loss 0.0003468706563580781\nepoch 48, loss 0.0003484542539808899\nepoch 49, loss 0.0003477007558103651",
      "\nepoch 50, loss 0.0003474201075732708\nepoch 51, loss 0.0003474078548606485\n",
      "epoch 52, loss 0.00034718686947599053\nepoch 53, loss 0.0003495394194032997\nepoch 54, loss 0.00034797139232978225\nepoch 55, loss 0.0003485883353278041",
      "\nepoch 56, loss 0.0003469603252597153\nepoch 57, loss 0.00035348045639693737",
      "\nepoch 58, loss 0.00034708905150182545\nepoch 59, loss 0.00034707796294242144\nepoch 60, loss 0.00034679274540394545",
      "\nepoch 61, loss 0.0003471833188086748\nepoch 62, loss 0.0003469670773483813\n",
      "epoch 63, loss 0.00034676759969443083\nepoch 64, loss 0.0003467677452135831\nepoch 65, loss 0.00034676562063395977\nepoch 66, loss 0.00034676253562793136",
      "\nepoch 67, loss 0.0003469875082373619\nepoch 68, loss 0.00034860530286096036\n",
      "epoch 69, loss 0.00034675622009672225\nepoch 70, loss 0.00035104661947116256\nepoch 71, loss 0.0003467569185886532\n",
      "epoch 72, loss 0.00034762220457196236\nepoch 73, loss 0.0003470857336651534\nepoch 74, loss 0.0003467302885837853\n",
      "epoch 75, loss 0.0003484878980088979\nepoch 76, loss 0.00034693803172558546\nepoch 77, loss 0.00034711993066594005",
      "\nepoch 78, loss 0.00034671631874516606\nepoch 79, loss 0.0003472570388112217\n",
      "epoch 80, loss 0.0003469442599453032\nepoch 81, loss 0.0003486853966023773\nepoch 82, loss 0.00035323697375133634\nepoch 83, loss 0.0003470180672593415",
      "\nepoch 84, loss 0.0003500601160340011\nepoch 85, loss 0.00034702385892160237\n",
      "epoch 86, loss 0.000348900182871148\nepoch 87, loss 0.0003565662482287735\nepoch 88, loss 0.00034674801281653345\nepoch 89, loss 0.0003471387317404151",
      "\nepoch 90, loss 0.00034667880390770733\n",
      "epoch 91, loss 0.0003469336370471865\nepoch 92, loss 0.0003487837966531515\nepoch 93, loss 0.0003467090427875519\n",
      "epoch 94, loss 0.0003468252543825656\nepoch 95, loss 0.0003481378371361643\nepoch 96, loss 0.00034687842708081007\n",
      "epoch 97, loss 0.0003466772031970322\nepoch 98, loss 0.000361327693099156\nepoch 99, loss 0.00034686108119785786\n",
      "epoch 100, loss 0.0003522197366692126\nepoch 101, loss 0.0003466503112576902\nepoch 102, loss 0.00034908426459878683\n",
      "epoch 103, loss 0.00034676591167226434\nepoch 104, loss 0.0003469401563052088\nepoch 105, loss 0.00034749385667964816\nepoch 106, loss 0.0003474571567494422",
      "\nepoch 107, loss 0.00034694443456828594\nepoch 108, loss 0.0003471121017355472\n",
      "epoch 109, loss 0.00034806531039066613\nepoch 110, loss 0.00034682347904890776\nepoch 111, loss 0.00034693736233748496\nepoch 112, loss 0.00034680948010645807",
      "\nepoch 113, loss 0.000346620858181268\nepoch 114, loss 0.0003468503709882498\n",
      "epoch 115, loss 0.00034668706939555705\nepoch 116, loss 0.00034659940865822136\nepoch 117, loss 0.00034679818782024086\nepoch 118, loss 0.00034662443795241416",
      "\nepoch 119, loss 0.00034659358789213\nepoch 120, loss 0.0003504121850710362",
      "\nepoch 121, loss 0.00034795276587828994\nepoch 122, loss 0.00034806173061951995\n",
      "epoch 123, loss 0.00035081239184364676\nepoch 124, loss 0.0003495383425615728\nepoch 125, loss 0.0003489128721412271",
      "\nepoch 126, loss 0.00034681829856708646\nepoch 127, loss 0.00034661428071558475\n",
      "epoch 128, loss 0.00034778943518176675\nepoch 129, loss 0.00034661011886782944\nepoch 130, loss 0.0003477499994914979\n",
      "epoch 131, loss 0.0003466535417828709\nepoch 132, loss 0.00034670293098315597\nepoch 133, loss 0.00034652362228371203\n",
      "epoch 134, loss 0.00034859892912209034\nepoch 135, loss 0.00034669862361624837\nepoch 136, loss 0.00034653846523724496\n",
      "epoch 137, loss 0.00034650895395316184\nepoch 138, loss 0.0003483642067294568\nepoch 139, loss 0.0003486782661639154\nepoch 140, loss 0.0003484774206299335",
      "\nepoch 141, loss 0.0003490424423944205\nepoch 142, loss 0.00034679454984143376",
      "\nepoch 143, loss 0.00034678648808039725\nepoch 144, loss 0.0003479569568298757\n",
      "epoch 145, loss 0.00034689164021983743\nepoch 146, loss 0.00034681212855502963\nepoch 147, loss 0.00034788798075169325",
      "\nepoch 148, loss 0.00034645735286176205\nepoch 149, loss 0.0003478424914646894\nepoch 150, loss 0.00035077965003438294",
      "\nepoch 151, loss 0.0003464384935796261\nepoch 152, loss 0.00034744784352369606\n",
      "epoch 153, loss 0.00034696885268203914\nepoch 154, loss 0.0003464960027486086\nepoch 155, loss 0.00034646695712581277\n",
      "epoch 156, loss 0.0003470523515716195\nepoch 157, loss 0.0003494588891044259\nepoch 158, loss 0.0003507844521664083\n",
      "epoch 159, loss 0.0003467477799858898\nepoch 160, loss 0.0003464246983639896\nepoch 161, loss 0.00034790756762959063\nepoch 162, loss 0.0003465704503469169",
      "\nepoch 163, loss 0.0003464565088506788\nepoch 164, loss 0.00034720764961093664\n",
      "epoch 165, loss 0.0003464377950876951\nepoch 166, loss 0.00034673933987505734\nepoch 167, loss 0.0003477773570921272\nepoch 168, loss 0.0003528617671690881",
      "\nepoch 169, loss 0.00034645057166926563\nepoch 170, loss 0.00034671067260205746\n",
      "epoch 171, loss 0.00034638470970094204\nepoch 172, loss 0.00034645554842427373\nepoch 173, loss 0.00035256348201073706\nepoch 174, loss 0.0003471385280136019",
      "\nepoch 175, loss 0.0003463678585831076\nepoch 176, loss 0.0003465118643362075\n",
      "epoch 177, loss 0.0003463852626737207\nepoch 178, loss 0.0003479564911685884\nepoch 179, loss 0.0003463320026639849\n",
      "epoch 180, loss 0.0003473623364698142\nepoch 181, loss 0.00034636096097528934\nepoch 182, loss 0.0003476256679277867\n",
      "epoch 183, loss 0.0003485091438051313\nepoch 184, loss 0.0003470401861704886\nepoch 185, loss 0.0003463620087131858\nepoch 186, loss 0.0003463198954705149",
      "\nepoch 187, loss 0.0003467144269961864\nepoch 188, loss 0.0003462904423940927\n",
      "epoch 189, loss 0.00034663951373659074\nepoch 190, loss 0.0003476869023870677\nepoch 191, loss 0.0003463848552200943\n",
      "epoch 192, loss 0.00034672231413424015\nepoch 193, loss 0.00034627068089321256\nepoch 194, loss 0.0003466509806457907\n",
      "epoch 195, loss 0.00034827005583792925\nepoch 196, loss 0.0003465600893832743\nepoch 197, loss 0.00034623261308297515\nepoch 198, loss 0.0003469845687504858",
      "\nepoch 199, loss 0.00034631910966709256\nepoch 200, loss 0.00034683203557506204\n",
      "epoch 201, loss 0.00034693622728809714\nepoch 202, loss 0.0003477091377135366\nepoch 203, loss 0.0003465961490292102\n",
      "epoch 204, loss 0.0003462271415628493\nepoch 205, loss 0.0003466532507445663\nepoch 206, loss 0.00034620307269506156\n",
      "epoch 207, loss 0.0003462831664364785\nepoch 208, loss 0.00034750800114125013\nepoch 209, loss 0.0003481539024505764\n",
      "epoch 210, loss 0.0003479692677501589\nepoch 211, loss 0.00034708765451796353\nepoch 212, loss 0.0003471560194157064\n",
      "epoch 213, loss 0.00034651439636945724\nepoch 214, loss 0.0003467789210844785\nepoch 215, loss 0.0003469722287263721\nepoch 216, loss 0.0003461937594693154",
      "\nepoch 217, loss 0.00034738238900899887\nepoch 218, loss 0.0003464834881015122",
      "\nepoch 219, loss 0.00034668855369091034\nepoch 220, loss 0.00034660164965316653\nepoch 221, loss 0.00034615391632542014",
      "\nepoch 222, loss 0.00034732840140350163\nepoch 223, loss 0.0003461566520854831\n",
      "epoch 224, loss 0.00034909433452412486\nepoch 225, loss 0.00034652400063350797\nepoch 226, loss 0.00035268618375994265\n",
      "epoch 227, loss 0.0003569029795471579\nepoch 228, loss 0.00034842939930967987\nepoch 229, loss 0.00034606936969794333\n",
      "epoch 230, loss 0.0003484985209070146\nepoch 231, loss 0.0003488355432637036\nepoch 232, loss 0.000346096494467929\n",
      "epoch 233, loss 0.00034610842703841627\nepoch 234, loss 0.0003460636071395129\nepoch 235, loss 0.0003463683824520558\n",
      "epoch 236, loss 0.0003475818666629493\nepoch 237, loss 0.0003474754630587995\nepoch 238, loss 0.0003460702719166875\n",
      "epoch 239, loss 0.0003460441075731069\nepoch 240, loss 0.0003465717891231179\nepoch 241, loss 0.00034709193278104067\n",
      "epoch 242, loss 0.0003459950676187873\nepoch 243, loss 0.00034618572681210935\nepoch 244, loss 0.00034996154136024415\nepoch 245, loss 0.0003467114584054798",
      "\nepoch 246, loss 0.00034600976505316794\nepoch 247, loss 0.0003463255998212844\n",
      "epoch 248, loss 0.00034595036413520575\nepoch 249, loss 0.0003467427159193903\nepoch 250, loss 0.0003461561573203653\nepoch 251, loss 0.0003459955332800746",
      "\nepoch 252, loss 0.0003467849164735526\nepoch 253, loss 0.00034733055508695543\n",
      "epoch 254, loss 0.00034680383396334946\nepoch 255, loss 0.0003459365980233997\nepoch 256, loss 0.00034590018913149834\nepoch 257, loss 0.00034589366987347603",
      "\nepoch 258, loss 0.00034650470479391515\nepoch 259, loss 0.00034596805926412344\n",
      "epoch 260, loss 0.0003473825054243207\nepoch 261, loss 0.00034606081317178905\nepoch 262, loss 0.00034652152680791914\nepoch 263, loss 0.0003459608706180006",
      "\nepoch 264, loss 0.0003481601888779551\nepoch 265, loss 0.0003489587106741965\n",
      "epoch 266, loss 0.0003458531282376498\nepoch 267, loss 0.00034728748141787946\nepoch 268, loss 0.00034969497937709093\n",
      "epoch 269, loss 0.00034693864290602505\nepoch 270, loss 0.00034810780198313296\nepoch 271, loss 0.0003460262669250369\n",
      "epoch 272, loss 0.00034598150523379445\nepoch 273, loss 0.00034587032860144973\nepoch 274, loss 0.00034584212698973715\nepoch 275, loss 0.000346694840118289",
      "\nepoch 276, loss 0.00034650115412659943\nepoch 277, loss 0.0003462270542513579",
      "\nepoch 278, loss 0.0003476347483228892\nepoch 279, loss 0.0003476552665233612\n",
      "epoch 280, loss 0.0003518852754496038\nepoch 281, loss 0.00034661893732845783\nepoch 282, loss 0.0003467664064373821\n",
      "epoch 283, loss 0.0003460150910541415\nepoch 284, loss 0.000345778331393376\nepoch 285, loss 0.0003458125574979931\nepoch 286, loss 0.00034626323031261563",
      "\nepoch 287, loss 0.00034598313504830003\nepoch 288, loss 0.0003456881386227906\n",
      "epoch 289, loss 0.0003470629162620753\nepoch 290, loss 0.0003560905170161277\nepoch 291, loss 0.0003461885789874941\nepoch 292, loss 0.0003459122672211379",
      "\nepoch 293, loss 0.0003457817656453699\nepoch 294, loss 0.0003464712353888899\n",
      "epoch 295, loss 0.00034724088618531823\nepoch 296, loss 0.00034589116694405675\nepoch 297, loss 0.00034575999598018825\nepoch 298, loss 0.00034565257374197245",
      "\nepoch 299, loss 0.000345894368365407\nepoch 300, loss 0.00034999349736608565",
      "\nepoch 301, loss 0.0003458782739471644\nepoch 302, loss 0.00034620464430190623\nepoch 303, loss 0.0003457987622823566",
      "\nepoch 304, loss 0.0003457571438048035\nepoch 305, loss 0.0003457654966041446\n",
      "epoch 306, loss 0.00034631218295544386\nepoch 307, loss 0.0003494678530842066\nepoch 308, loss 0.00034811231307685375\n",
      "epoch 309, loss 0.00034582617809064686\nepoch 310, loss 0.0003497999277897179\nepoch 311, loss 0.0003513164701871574",
      "\nepoch 312, loss 0.00034555522142909467\nepoch 313, loss 0.0003462299064267427\nepoch 314, loss 0.0003466380585450679",
      "\nepoch 315, loss 0.0003455566184129566\nepoch 316, loss 0.0003464319743216038",
      "\nepoch 317, loss 0.0003454530087765306\nepoch 318, loss 0.00034738509566523135\n",
      "epoch 319, loss 0.00034636451164260507\nepoch 320, loss 0.0003454257093835622\n",
      "epoch 321, loss 0.00034543973742984235\nepoch 322, loss 0.00034541424247436225\nepoch 323, loss 0.0003478253202047199\n",
      "epoch 324, loss 0.00034538452746346593\nepoch 325, loss 0.00034545123344287276\nepoch 326, loss 0.00034538598265498877\n",
      "epoch 327, loss 0.00034540813066996634\nepoch 328, loss 0.0003463428874965757\nepoch 329, loss 0.00034770090132951736\n",
      "epoch 330, loss 0.00034874671837314963\nepoch 331, loss 0.00034744219738058746\nepoch 332, loss 0.00034533042344264686\n",
      "epoch 333, loss 0.00034531322307884693\nepoch 334, loss 0.000347979279467836\nepoch 335, loss 0.00034580036299303174\n",
      "epoch 336, loss 0.0003453317331150174\nepoch 337, loss 0.0003454553952906281\nepoch 338, loss 0.0003482536703813821\n",
      "epoch 339, loss 0.00034529317053966224\nepoch 340, loss 0.00034568601404316723\nepoch 341, loss 0.00034538752515800297\nepoch 342, loss 0.00034764810698106885",
      "\nepoch 343, loss 0.00034638179931789637\nepoch 344, loss 0.0003453665121924132\n",
      "epoch 345, loss 0.00034555260208435357\nepoch 346, loss 0.0003456084232311696\nepoch 347, loss 0.00035003144876100123\nepoch 348, loss 0.00034629119909368455",
      "\nepoch 349, loss 0.0003486599016468972\nepoch 350, loss 0.0003464570618234575\n",
      "epoch 351, loss 0.00034552105353213847\nepoch 352, loss 0.000345186039339751\nepoch 353, loss 0.0003451063821557909\nepoch 354, loss 0.0003450980584602803",
      "\nepoch 355, loss 0.00034627472632564604\nepoch 356, loss 0.00034509829129092395\n",
      "epoch 357, loss 0.00034507267992012203\nepoch 358, loss 0.00034528932883404195\nepoch 359, loss 0.0003454908146522939\n",
      "epoch 360, loss 0.00034616095945239067\nepoch 361, loss 0.0003451661323197186\nepoch 362, loss 0.00034501790651120245\n",
      "epoch 363, loss 0.0003449982905294746\nepoch 364, loss 0.0003450493677519262\nepoch 365, loss 0.0003451381344348192\nepoch 366, loss 0.00034642621176317334",
      "\nepoch 367, loss 0.0003466579073574394\nepoch 368, loss 0.00034504360519349575\n",
      "epoch 369, loss 0.0003462093009147793\nepoch 370, loss 0.0003451984084676951\nepoch 371, loss 0.00034520719782449305\n",
      "epoch 372, loss 0.0003454071411397308\nepoch 373, loss 0.0003454393008723855\nepoch 374, loss 0.0003477655991446227\n",
      "epoch 375, loss 0.0003451537049841136\nepoch 376, loss 0.00034655604395084083\nepoch 377, loss 0.00034508557291701436\n",
      "epoch 378, loss 0.00034535565646365285\nepoch 379, loss 0.00034514133585616946\nepoch 380, loss 0.00034644390689209104\n",
      "epoch 381, loss 0.0003501158789731562\nepoch 382, loss 0.00034831356606446207\nepoch 383, loss 0.0003447929921094328\n",
      "epoch 384, loss 0.00034476377186365426\nepoch 385, loss 0.0003448842326179147\nepoch 386, loss 0.0003447313793003559\n",
      "epoch 387, loss 0.0003453828685451299\nepoch 388, loss 0.00034498178865760565\nepoch 389, loss 0.00034470370155759156\n",
      "epoch 390, loss 0.00034468783996999264\nepoch 391, loss 0.000345450738677755\nepoch 392, loss 0.00034575341851450503\n",
      "epoch 393, loss 0.0003448751231189817\nepoch 394, loss 0.00034504616633057594\nepoch 395, loss 0.0003520784666761756\n",
      "epoch 396, loss 0.00034460946335457265\nepoch 397, loss 0.0003462837194092572\nepoch 398, loss 0.0003452365635894239\n",
      "epoch 399, loss 0.0003446085029281676\nepoch 400, loss 0.0003446702321525663\nepoch 401, loss 0.0003459526924416423\n",
      "epoch 402, loss 0.000345812615705654\nepoch 403, loss 0.0003445124893914908\nepoch 404, loss 0.0003464316832832992\n",
      "epoch 405, loss 0.00034456534194760025\nepoch 406, loss 0.0003474762779660523\nepoch 407, loss 0.0003449920623097569\n",
      "epoch 408, loss 0.00034494357532821596\nepoch 409, loss 0.00034481275361031294\nepoch 410, loss 0.0003450311778578907\n",
      "epoch 411, loss 0.00034454144770279527\nepoch 412, loss 0.0003495537966955453\nepoch 413, loss 0.0003450631338637322\n",
      "epoch 414, loss 0.00034618936479091644\nepoch 415, loss 0.0003584578225854784\nepoch 416, loss 0.00034544459776952863\n",
      "epoch 417, loss 0.0003444438043516129\nepoch 418, loss 0.00034496927401050925\nepoch 419, loss 0.0003442922024987638\n",
      "epoch 420, loss 0.00034559282357804477\nepoch 421, loss 0.0003450448566582054\nepoch 422, loss 0.0003442498273216188\n",
      "epoch 423, loss 0.00034519206383265555\nepoch 424, loss 0.00034474206040613353\nepoch 425, loss 0.00034440020681358874\n",
      "epoch 426, loss 0.00034426976344548166\nepoch 427, loss 0.0003441925800871104\nepoch 428, loss 0.00034742511343210936\n",
      "epoch 429, loss 0.0003444046596996486\nepoch 430, loss 0.0003446028276812285\nepoch 431, loss 0.00034436112036928535\n",
      "epoch 432, loss 0.00034962096833623946\nepoch 433, loss 0.00034721827250905335\nepoch 434, loss 0.0003441738081164658\n",
      "epoch 435, loss 0.0003444589674472809\nepoch 436, loss 0.0003444342000875622\nepoch 437, loss 0.0003444219473749399\n",
      "epoch 438, loss 0.0003458674473222345\nepoch 439, loss 0.00034431469975970685\n",
      "epoch 440, loss 0.0003440317523200065\nepoch 441, loss 0.00034537125611677766\nepoch 442, loss 0.00034518257598392665",
      "\nepoch 443, loss 0.00034423195756971836\nepoch 444, loss 0.0003451730590313673\n",
      "epoch 445, loss 0.0003447225608397275\nepoch 446, loss 0.00034507084637880325\nepoch 447, loss 0.0003442501474637538\n",
      "epoch 448, loss 0.0003524845524225384\nepoch 449, loss 0.0003439073625486344\nepoch 450, loss 0.00034587166737765074\n",
      "epoch 451, loss 0.00034408963983878493\nepoch 452, loss 0.0003445656329859048\nepoch 453, loss 0.0003437461273279041\nepoch 454, loss 0.0003437421109993011",
      "\nepoch 455, loss 0.00034378323471173644\nepoch 456, loss 0.00034368940396234393\n",
      "epoch 457, loss 0.0003445457841735333\nepoch 458, loss 0.0003457226266618818\nepoch 459, loss 0.00034454092383384705\nepoch 460, loss 0.00034389784559607506",
      "\nepoch 461, loss 0.0003436195256654173\nepoch 462, loss 0.0003537858428899199\n",
      "epoch 463, loss 0.0003439252614043653\nepoch 464, loss 0.0003437165287323296\nepoch 465, loss 0.0003457549319136888\n",
      "epoch 466, loss 0.0003477327700238675\nepoch 467, loss 0.0003438125131651759\nepoch 468, loss 0.0003450076619628817\n",
      "epoch 469, loss 0.0003435157996136695\nepoch 470, loss 0.0003439359425101429\nepoch 471, loss 0.0003537617449183017\n",
      "epoch 472, loss 0.0003459926228970289\nepoch 473, loss 0.00034349074121564627\nepoch 474, loss 0.0003453751851338893\n",
      "epoch 475, loss 0.0003433517413213849\nepoch 476, loss 0.00034615807817317545\nepoch 477, loss 0.0003447426133789122\nepoch 478, loss 0.0003437009290792048",
      "\nepoch 479, loss 0.0003432947560213506\nepoch 480, loss 0.0003433173114899546",
      "\nepoch 481, loss 0.00034355054958723485\nepoch 482, loss 0.00034362307633273304\n",
      "epoch 483, loss 0.0003432466182857752\nepoch 484, loss 0.00034369342029094696\nepoch 485, loss 0.0003448910138104111\n",
      "epoch 486, loss 0.00034311824128963053\nepoch 487, loss 0.00034469712409190834\nepoch 488, loss 0.0003435039834585041\nepoch 489, loss 0.00034680275712162256",
      "\nepoch 490, loss 0.00034314795630052686\nepoch 491, loss 0.0003446785849519074\n",
      "epoch 492, loss 0.00034301760024391115\nepoch 493, loss 0.0003434225218370557\nepoch 494, loss 0.00034300435800105333\n",
      "epoch 495, loss 0.0003429555508773774\nepoch 496, loss 0.00034298235550522804\nepoch 497, loss 0.0003452721575740725\n",
      "epoch 498, loss 0.0003450195654295385\nepoch 499, loss 0.00034286180743947625\nepoch 500, loss 0.00034287571907043457\n",
      "epoch 501, loss 0.00034279280225746334\nepoch 502, loss 0.0003437816340010613\nepoch 503, loss 0.0003429079952184111\n",
      "epoch 504, loss 0.0003436307597439736\nepoch 505, loss 0.0003426987968850881\nepoch 506, loss 0.0003439026477281004\n",
      "epoch 507, loss 0.00034265287104062736\nepoch 508, loss 0.00034518889151513577\nepoch 509, loss 0.0003426991170272231\n",
      "epoch 510, loss 0.00034478033194318414\nepoch 511, loss 0.00034261465771123767\nepoch 512, loss 0.00034256200888194144\n",
      "epoch 513, loss 0.00034761603455990553\nepoch 514, loss 0.000343724328558892\nepoch 515, loss 0.0003424833412282169\n",
      "epoch 516, loss 0.0003431137592997402\nepoch 517, loss 0.00034255656646564603\nepoch 518, loss 0.00034318925463594496\nepoch 519, loss 0.00034241657704114914",
      "\nepoch 520, loss 0.0003429237112868577\nepoch 521, loss 0.0003426348848734051\n",
      "epoch 522, loss 0.00034586561378091574\nepoch 523, loss 0.0003430238866712898\nepoch 524, loss 0.00034400535514578223\nepoch 525, loss 0.0003422209993004799",
      "\nepoch 526, loss 0.0003427519113756716\nepoch 527, loss 0.00034217143547721207\n",
      "epoch 528, loss 0.0003433793317526579\nepoch 529, loss 0.00034212396712973714\nepoch 530, loss 0.0003420890716370195\n",
      "epoch 531, loss 0.000342337298206985\nepoch 532, loss 0.0003425355826038867\nepoch 533, loss 0.0003420343855395913\n",
      "epoch 534, loss 0.0003425658796913922\nepoch 535, loss 0.0003422713780310005\nepoch 536, loss 0.00034232225152663887\n",
      "epoch 537, loss 0.000342037616064772\nepoch 538, loss 0.0003419042914174497\nepoch 539, loss 0.0003420051361899823\n",
      "epoch 540, loss 0.00034313093055970967\nepoch 541, loss 0.00034185152617283165\nepoch 542, loss 0.0003427007468417287\n",
      "epoch 543, loss 0.0003423766465857625\nepoch 544, loss 0.0003417730622459203\nepoch 545, loss 0.00034186869743280113\n",
      "epoch 546, loss 0.0003482588508632034\nepoch 547, loss 0.00034236686769872904\nepoch 548, loss 0.00034161523217335343\nepoch 549, loss 0.00034165894612669945",
      "\nepoch 550, loss 0.0003423083107918501\nepoch 551, loss 0.00034217388019897044\n",
      "epoch 552, loss 0.00034441324532963336\nepoch 553, loss 0.00034191436134278774\nepoch 554, loss 0.0003414986713323742\nepoch 555, loss 0.00034171203151345253",
      "\nepoch 556, loss 0.00034221267560496926\nepoch 557, loss 0.0003415727405808866\n",
      "epoch 558, loss 0.00034224073169752955\nepoch 559, loss 0.00034317682730033994\nepoch 560, loss 0.00034125280217267573\nepoch 561, loss 0.0003413494268897921",
      "\nepoch 562, loss 0.00034229870652779937\nepoch 563, loss 0.00034169346326962113\n",
      "epoch 564, loss 0.00034156907349824905\nepoch 565, loss 0.00034168618731200695\nepoch 566, loss 0.0003410626668483019\nepoch 567, loss 0.0003412998921703547",
      "\nepoch 568, loss 0.00034368460183031857\nepoch 569, loss 0.0003409905475564301\n",
      "epoch 570, loss 0.00034324341686442494\nepoch 571, loss 0.0003409093478694558\nepoch 572, loss 0.00034093085560016334\nepoch 573, loss 0.0003409780329093337",
      "\nepoch 574, loss 0.00034099159529432654\nepoch 575, loss 0.0003410278877709061\n",
      "epoch 576, loss 0.0003407871990930289\nepoch 577, loss 0.00034076906740665436\nepoch 578, loss 0.00034068067907355726\n",
      "epoch 579, loss 0.0003408458433113992\nepoch 580, loss 0.00034132308792322874\nepoch 581, loss 0.0003409938362892717\n",
      "epoch 582, loss 0.00034057581797242165\nepoch 583, loss 0.000340689264703542\nepoch 584, loss 0.000340714817866683\nepoch 585, loss 0.00034079261240549386",
      "\nepoch 586, loss 0.00034071452682837844\nepoch 587, loss 0.0003405926108825952\n",
      "epoch 588, loss 0.0003413506783545017\nepoch 589, loss 0.00034041571780107915\nepoch 590, loss 0.0003405309107620269\nepoch 591, loss 0.00034028218942694366",
      "\nepoch 592, loss 0.0003404988383408636\nepoch 593, loss 0.00034041868639178574\n",
      "epoch 594, loss 0.00034031778341159225\nepoch 595, loss 0.00034011874231509864\nepoch 596, loss 0.0003430844226386398\n",
      "epoch 597, loss 0.0003411312645766884\nepoch 598, loss 0.0003403539303690195\nepoch 599, loss 0.0003400871064513922\n",
      "epoch 600, loss 0.0003399864654056728\nepoch 601, loss 0.0003411588550079614\nepoch 602, loss 0.00034014854463748634\nepoch 603, loss 0.000339898862875998",
      "\nepoch 604, loss 0.00034311789204366505\nepoch 605, loss 0.0003397450491320342\n",
      "epoch 606, loss 0.00034031138056889176\nepoch 607, loss 0.0003407081530895084\nepoch 608, loss 0.00034037555451504886\nepoch 609, loss 0.00033982424065470695",
      "\nepoch 610, loss 0.0003395536041352898\nepoch 611, loss 0.0003406308824196458\n",
      "epoch 612, loss 0.00033991283271461725\nepoch 613, loss 0.0003394342493265867\nepoch 614, loss 0.00033938331762328744\nepoch 615, loss 0.0003393475490156561\n",
      "epoch 616, loss 0.00034090131521224976\nepoch 617, loss 0.00033961719600483775\nepoch 618, loss 0.0003397571272216737\n",
      "epoch 619, loss 0.00034788172342814505\nepoch 620, loss 0.00033959190477617085\nepoch 621, loss 0.00034025058266706765\n",
      "epoch 622, loss 0.0003397505497559905\nepoch 623, loss 0.00033951475052163005\nepoch 624, loss 0.0003409941855352372\n",
      "epoch 625, loss 0.00033982034074142575\nepoch 626, loss 0.00033889536280184984\nepoch 627, loss 0.0003395809617359191\n",
      "epoch 628, loss 0.00033889530459418893\nepoch 629, loss 0.0003387685283087194\nepoch 630, loss 0.00034092520945705473\n",
      "epoch 631, loss 0.0003387600008863956\nepoch 632, loss 0.0003386487369425595\nepoch 633, loss 0.00033910799538716674\nepoch 634, loss 0.00034353850060142577",
      "\nepoch 635, loss 0.0003387675969861448\nepoch 636, loss 0.00033849600004032254\n",
      "epoch 637, loss 0.00034169608261436224\nepoch 638, loss 0.0003386744356248528\nepoch 639, loss 0.0003393566294107586\nepoch 640, loss 0.00033837585942819715",
      "\nepoch 641, loss 0.00033852356136776507\nepoch 642, loss 0.0003399659472052008\n",
      "epoch 643, loss 0.0003382957074791193\nepoch 644, loss 0.0003401599533390254\nepoch 645, loss 0.0003380771668162197\n",
      "epoch 646, loss 0.00033803083351813257\nepoch 647, loss 0.0003382402937859297\nepoch 648, loss 0.00034019810846075416\n",
      "epoch 649, loss 0.0003382745780982077\nepoch 650, loss 0.00033785734558478\nepoch 651, loss 0.00033779029035940766\n",
      "epoch 652, loss 0.000338372599799186\nepoch 653, loss 0.0003377455868758261\nepoch 654, loss 0.00033788540167734027\n",
      "epoch 655, loss 0.0003378704423084855\nepoch 656, loss 0.00033756159245967865\nepoch 657, loss 0.00033820371027104557\nepoch 658, loss 0.0003375006781425327",
      "\nepoch 659, loss 0.0003374743682797998\nepoch 660, loss 0.00033739491482265294\n",
      "epoch 661, loss 0.00033879271359182894\nepoch 662, loss 0.0003372810024302453\nepoch 663, loss 0.00033825202262960374\n",
      "epoch 664, loss 0.0003372717183083296\nepoch 665, loss 0.0003400815185159445\nepoch 666, loss 0.00033706522663123906\n",
      "epoch 667, loss 0.00033701639040373266\nepoch 668, loss 0.0003376005915924907\nepoch 669, loss 0.0003369234036654234\n",
      "epoch 670, loss 0.0003368636826053262\nepoch 671, loss 0.00033682299545034766\nepoch 672, loss 0.0003367653116583824\n",
      "epoch 673, loss 0.00034279280225746334\nepoch 674, loss 0.00033689726842567325\nepoch 675, loss 0.00033790277666412294\n",
      "epoch 676, loss 0.0003400276182219386\nepoch 677, loss 0.00033656475716270506\nepoch 678, loss 0.0003364757285453379\n",
      "epoch 679, loss 0.00033772559254430234\nepoch 680, loss 0.00033777844510041177\nepoch 681, loss 0.0003369252954144031\nepoch 682, loss 0.00033646015799604356",
      "\nepoch 683, loss 0.0003363703435752541\nepoch 684, loss 0.000336647208314389\n",
      "epoch 685, loss 0.00033613209961913526\nepoch 686, loss 0.00033602287294343114\nepoch 687, loss 0.0003376001550350338\nepoch 688, loss 0.0003374955558683723",
      "\nepoch 689, loss 0.00033589484519325197\nepoch 690, loss 0.0003405194729566574\n",
      "epoch 691, loss 0.00033668498508632183\nepoch 692, loss 0.00033591617830097675\nepoch 693, loss 0.00033616216387599707\n",
      "epoch 694, loss 0.00033564813202247024\nepoch 695, loss 0.0003355573571752757\nepoch 696, loss 0.00033710928983055055\n",
      "epoch 697, loss 0.0003359357942827046\nepoch 698, loss 0.00033576186979189515\nepoch 699, loss 0.00033805760904215276\n",
      "epoch 700, loss 0.00033540913136675954\nepoch 701, loss 0.0003353104111738503\nepoch 702, loss 0.000336184079060331\n",
      "epoch 703, loss 0.0003356336383149028\nepoch 704, loss 0.0003366963646840304\nepoch 705, loss 0.0003351898631080985\n",
      "epoch 706, loss 0.0003355402732267976\nepoch 707, loss 0.0003349953331053257\nepoch 708, loss 0.00033502469887025654\n",
      "epoch 709, loss 0.0003348340396769345\nepoch 710, loss 0.0003358171379659325\nepoch 711, loss 0.0003481021267361939\nepoch 712, loss 0.000334926851792261",
      "\nepoch 713, loss 0.0003344858705531806\nepoch 714, loss 0.00033443907159380615\n",
      "epoch 715, loss 0.00033497935510240495\nepoch 716, loss 0.0003384239971637726\nepoch 717, loss 0.00033424608409404755\n",
      "epoch 718, loss 0.00033447405439801514\nepoch 719, loss 0.0003377342945896089\nepoch 720, loss 0.0003340625262353569\n",
      "epoch 721, loss 0.0003340737021062523\nepoch 722, loss 0.0003345161094330251\nepoch 723, loss 0.00033689779229462147\nepoch 724, loss 0.0003337808884680271",
      "\nepoch 725, loss 0.00034673186019062996\nepoch 726, loss 0.00033398010418750346\n",
      "epoch 727, loss 0.0003335873770993203\nepoch 728, loss 0.00033375126076862216\nepoch 729, loss 0.0003376493405085057\n",
      "epoch 730, loss 0.0003340098774060607\nepoch 731, loss 0.00033372046891599894\nepoch 732, loss 0.0003342095296829939\nepoch 733, loss 0.00033329869620501995",
      "\nepoch 734, loss 0.0003336964873597026\nepoch 735, loss 0.0003337823145557195\nepoch 736, loss 0.0003367433964740485",
      "\nepoch 737, loss 0.0003330022736918181\nepoch 738, loss 0.00033333615283481777\n",
      "epoch 739, loss 0.00033321595401503146\nepoch 740, loss 0.00033331604208797216\nepoch 741, loss 0.00033352349419146776\n",
      "epoch 742, loss 0.0003336096997372806\nepoch 743, loss 0.0003333567874506116\nepoch 744, loss 0.0003338661335874349\n",
      "epoch 745, loss 0.0003351230116095394\nepoch 746, loss 0.0003353079955559224\nepoch 747, loss 0.0003327234007883817\nepoch 748, loss 0.00033525776234455407",
      "\nepoch 749, loss 0.00033286536927334964\nepoch 750, loss 0.0003321864060126245\n",
      "epoch 751, loss 0.00033195025753229856\nepoch 752, loss 0.0003328507300466299\nepoch 753, loss 0.00033187904045917094\n",
      "epoch 754, loss 0.0003318056697025895\nepoch 755, loss 0.00033443450229242444\nepoch 756, loss 0.00033320634975098073\n",
      "epoch 757, loss 0.00033286138204857707\nepoch 758, loss 0.00033314249594695866\nepoch 759, loss 0.0003314087516628206\n",
      "epoch 760, loss 0.0003364094300195575\nepoch 761, loss 0.0003317669907119125\nepoch 762, loss 0.0003311747859697789\n",
      "epoch 763, loss 0.00033335198531858623\nepoch 764, loss 0.00033188555971719325\nepoch 765, loss 0.0003309314197394997\nepoch 766, loss 0.00033092102967202663",
      "\nepoch 767, loss 0.00033088107011280954\nepoch 768, loss 0.0003308652376290411\n",
      "epoch 769, loss 0.0003309586027171463\nepoch 770, loss 0.0003452868259046227\nepoch 771, loss 0.0003304707061033696\n",
      "epoch 772, loss 0.0003307745500933379\nepoch 773, loss 0.00033193916897289455\nepoch 774, loss 0.00033024439471773803\nepoch 775, loss 0.0003301973920315504",
      "\nepoch 776, loss 0.00033034890657290816\nepoch 777, loss 0.0003302441618870944\nepoch 778, loss 0.0003302502154838294",
      "\nepoch 779, loss 0.0003301492251921445\nepoch 780, loss 0.00032977701630443335\n",
      "epoch 781, loss 0.00033175008138641715\nepoch 782, loss 0.00033007963793352246\nepoch 783, loss 0.00032954581547528505\n",
      "epoch 784, loss 0.0003294555644970387\nepoch 785, loss 0.000329453032463789\nepoch 786, loss 0.000329423084622249\n",
      "epoch 787, loss 0.0003364321601111442\nepoch 788, loss 0.00032938236836344004\nepoch 789, loss 0.0003307997540105134\nepoch 790, loss 0.00033013519714586437",
      "\nepoch 791, loss 0.00033498945413157344\nepoch 792, loss 0.0003289208107162267\n",
      "epoch 793, loss 0.0003287221770733595\nepoch 794, loss 0.00032872892916202545\nepoch 795, loss 0.0003301269025541842\nepoch 796, loss 0.0003307716688141227",
      "\nepoch 797, loss 0.00032886964618228376\nepoch 798, loss 0.00033483721199445426\n",
      "epoch 799, loss 0.0003323025011923164\nepoch 800, loss 0.00032817176543176174\nepoch 801, loss 0.0003293767513241619\nepoch 802, loss 0.0003287066938355565",
      "\nepoch 803, loss 0.00032811728306114674\nepoch 804, loss 0.00032779810135252774\n",
      "epoch 805, loss 0.0003277194919064641\nepoch 806, loss 0.00032763933995738626\nepoch 807, loss 0.0003279977827332914\nepoch 808, loss 0.0003275493800174445",
      "\nepoch 809, loss 0.0003274783375672996\nepoch 810, loss 0.0003274507762398571\nepoch 811, loss 0.00032754233689047396",
      "\nepoch 812, loss 0.00032749350066296756\nepoch 813, loss 0.00032843518420122564\nepoch 814, loss 0.0003305924474261701",
      "\nepoch 815, loss 0.0003268419241067022\nepoch 816, loss 0.0003270125889685005\n",
      "epoch 817, loss 0.000326663808664307\nepoch 818, loss 0.0003265777777414769\nepoch 819, loss 0.0003333294007461518\n",
      "epoch 820, loss 0.0003269573498982936\nepoch 821, loss 0.00032710147206671536\nepoch 822, loss 0.00032627780456095934\n",
      "epoch 823, loss 0.00032662617741152644\nepoch 824, loss 0.0003263968392275274\nepoch 825, loss 0.0003260782395955175\nepoch 826, loss 0.00032589168404228985",
      "\nepoch 827, loss 0.00032582905259914696\nepoch 828, loss 0.0003261497477069497\n",
      "epoch 829, loss 0.0003255698538850993\nepoch 830, loss 0.0003259817895013839\nepoch 831, loss 0.0003283286059740931\n",
      "epoch 832, loss 0.0003265344421379268\nepoch 833, loss 0.0003254333569202572\nepoch 834, loss 0.00032519633532501757\n",
      "epoch 835, loss 0.0003253194154240191\nepoch 836, loss 0.00032744003692641854\nepoch 837, loss 0.0003248192078899592\n",
      "epoch 838, loss 0.00032598068355582654\nepoch 839, loss 0.0003326016594655812\nepoch 840, loss 0.0003248149005230516\n",
      "epoch 841, loss 0.0003248194698244333\nepoch 842, loss 0.0003260711382608861\nepoch 843, loss 0.0003263016988057643\nepoch 844, loss 0.0003256094641983509\n",
      "epoch 845, loss 0.00033253993024118245\nepoch 846, loss 0.00032449830905534327\nepoch 847, loss 0.0003242224920541048\n",
      "epoch 848, loss 0.00032392406137660146\nepoch 849, loss 0.00032366561936214566\nepoch 850, loss 0.0003262273094151169\nepoch 851, loss 0.00032387039391323924",
      "\nepoch 852, loss 0.0003245607076678425\nepoch 853, loss 0.0003234602336306125\n",
      "epoch 854, loss 0.00032318386365659535\nepoch 855, loss 0.0003230742004234344\nepoch 856, loss 0.0003237017663195729\nepoch 857, loss 0.0003352283383719623",
      "\nepoch 858, loss 0.00032348078093491495\nepoch 859, loss 0.00032316381111741066\n",
      "epoch 860, loss 0.0003226733242627233\nepoch 861, loss 0.00032279733568429947\nepoch 862, loss 0.00032270303927361965\nepoch 863, loss 0.00032472077873535454",
      "\nepoch 864, loss 0.00032399222254753113\nepoch 865, loss 0.00032236185506917536\n",
      "epoch 866, loss 0.0003246914129704237\nepoch 867, loss 0.00032229238422587514\nepoch 868, loss 0.00032181551796384156\n",
      "epoch 869, loss 0.00034319324186071754\nepoch 870, loss 0.0003225375839974731\nepoch 871, loss 0.00032145282602868974\n",
      "epoch 872, loss 0.0003226776607334614\nepoch 873, loss 0.00032279410515911877\nepoch 874, loss 0.00032118469243869185\n",
      "epoch 875, loss 0.0003232092421967536\nepoch 876, loss 0.0003214873722754419\nepoch 877, loss 0.00032082493999041617\n",
      "epoch 878, loss 0.0003223830135539174\nepoch 879, loss 0.0003207086119800806\nepoch 880, loss 0.0003215717733837664\n",
      "epoch 881, loss 0.00032070442102849483\nepoch 882, loss 0.00032094496418721974\nepoch 883, loss 0.00032022324739955366\n",
      "epoch 884, loss 0.00032074967748485506\nepoch 885, loss 0.0003214894386474043\nepoch 886, loss 0.00032034979085437953\n",
      "epoch 887, loss 0.0003205411194358021\nepoch 888, loss 0.00032105500577017665\nepoch 889, loss 0.0003195734752807766\n",
      "epoch 890, loss 0.0003198046761099249\nepoch 891, loss 0.0003200990322511643\nepoch 892, loss 0.00032834132434800267\nepoch 893, loss 0.0003192285948898643",
      "\nepoch 894, loss 0.0003190402057953179\nepoch 895, loss 0.00032051082234829664\n",
      "epoch 896, loss 0.0003190439019817859\nepoch 897, loss 0.0003189531562384218\nepoch 898, loss 0.0003306492289993912\n",
      "epoch 899, loss 0.00031869972008280456\nepoch 900, loss 0.0003189965500496328\nepoch 901, loss 0.00034141496871598065\n",
      "epoch 902, loss 0.00033365687704645097\nepoch 903, loss 0.00031807355117052794\nepoch 904, loss 0.00031851307721808553\nepoch 905, loss 0.0003234088362660259",
      "\nepoch 906, loss 0.0003178254119120538\nepoch 907, loss 0.00031775940442457795\n",
      "epoch 908, loss 0.00031944611691869795\nepoch 909, loss 0.0003173682780470699\nepoch 910, loss 0.00031731781200505793\n",
      "epoch 911, loss 0.0003171476419083774\nepoch 912, loss 0.00031772704096511006\nepoch 913, loss 0.0003169254050590098\n",
      "epoch 914, loss 0.00031815122929401696\nepoch 915, loss 0.0003181213396601379\nepoch 916, loss 0.0003187556576449424\nepoch 917, loss 0.00032170864869840443",
      "\nepoch 918, loss 0.0003167862305417657\nepoch 919, loss 0.0003180229978170246\n",
      "epoch 920, loss 0.0003172533761244267\nepoch 921, loss 0.00031693457276560366\nepoch 922, loss 0.0003165150701534003\nepoch 923, loss 0.00031584358657710254\n",
      "epoch 924, loss 0.0003201364306733012\nepoch 925, loss 0.00031579352798871696\nepoch 926, loss 0.00031565967947244644\n",
      "epoch 927, loss 0.00031562024378217757\nepoch 928, loss 0.00031701495754532516\nepoch 929, loss 0.00031623998074792325\nepoch 930, loss 0.00031579280039295554",
      "\nepoch 931, loss 0.00031583738746121526\nepoch 932, loss 0.00031478441087529063\n",
      "epoch 933, loss 0.0003147644456475973\nepoch 934, loss 0.00031504675280302763\nepoch 935, loss 0.0003147092938888818\nepoch 936, loss 0.0003147442766930908",
      "\nepoch 937, loss 0.0003150234988424927\nepoch 938, loss 0.0003140534390695393\n",
      "epoch 939, loss 0.00031428923830389977\nepoch 940, loss 0.0003141016641166061\nepoch 941, loss 0.00031409249641001225\n",
      "epoch 942, loss 0.00031358201522380114\nepoch 943, loss 0.00031617519562132657\nepoch 944, loss 0.00031334691448137164\n",
      "epoch 945, loss 0.00031367220799438655\nepoch 946, loss 0.0003138613828923553\nepoch 947, loss 0.0003138421743642539\n",
      "epoch 948, loss 0.00031304763979278505\nepoch 949, loss 0.0003142535570077598\nepoch 950, loss 0.0003138674364890903\n",
      "epoch 951, loss 0.00031368876807391644\nepoch 952, loss 0.00031268424936570227\nepoch 953, loss 0.0003123095666524023\n",
      "epoch 954, loss 0.0003125452494714409\nepoch 955, loss 0.0003120466135442257\nepoch 956, loss 0.00031202632817439735\n",
      "epoch 957, loss 0.00031181148369796574\nepoch 958, loss 0.0003122322086710483\nepoch 959, loss 0.0003115704166702926\n",
      "epoch 960, loss 0.00031784462044015527\nepoch 961, loss 0.0003114228311460465\nepoch 962, loss 0.00031192851020023227\n",
      "epoch 963, loss 0.00031219562515616417\nepoch 964, loss 0.00031368323834612966\nepoch 965, loss 0.00031534963636659086\n",
      "epoch 966, loss 0.00031188075081445277\nepoch 967, loss 0.00031220828532241285\nepoch 968, loss 0.00031059078173711896\n",
      "epoch 969, loss 0.000310384581098333\nepoch 970, loss 0.0003102526825387031\nepoch 971, loss 0.0003128419048152864\nepoch 972, loss 0.0003100245667155832",
      "\nepoch 973, loss 0.00031001705792732537\nepoch 974, loss 0.00031149096321314573\n",
      "epoch 975, loss 0.00030986126512289047\nepoch 976, loss 0.00031058237073011696\nepoch 977, loss 0.000309595896396786\nepoch 978, loss 0.0003095954889431596",
      "\nepoch 979, loss 0.00031441645114682615\nepoch 980, loss 0.0003091420803684741\n",
      "epoch 981, loss 0.00030911577050574124\nepoch 982, loss 0.0003096572763752192\nepoch 983, loss 0.0003087003715336323\n",
      "epoch 984, loss 0.0003087000222876668\nepoch 985, loss 0.0003104009374510497\nepoch 986, loss 0.000309285765979439\n",
      "epoch 987, loss 0.00030821363907307386\nepoch 988, loss 0.0003090662939939648\nepoch 989, loss 0.0003081167524214834\n",
      "epoch 990, loss 0.0003078357840422541\nepoch 991, loss 0.00030910459463484585\nepoch 992, loss 0.00030837557278573513\n",
      "epoch 993, loss 0.0003074897394981235\nepoch 994, loss 0.0003076744033023715\nepoch 995, loss 0.0003083766787312925\nepoch 996, loss 0.00031104241497814655",
      "\nepoch 997, loss 0.00030825455905869603\nepoch 998, loss 0.00030696808244101703\n",
      "epoch 999, loss 0.0003072075196541846\nepoch 1000, loss 0.000307115085888654\n"
     ],
     "output_type": "stream"
    }
   ],
   "source": [
    "num_epochs = 1000\n",
    "for epoch in range(num_epochs): \n",
    "    for X,y in dataloader:\n",
    "        l=loss(net(X) ,y)\n",
    "        trainer.zero_grad() \n",
    "        l.backward() \n",
    "        trainer.step() \n",
    "    l_epoch = loss(net(df_tensor), df_target) \n",
    "    print('epoch {}, loss {}'.format(epoch+1, l_epoch)) "
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n",
     "is_executing": false
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 73,
   "outputs": [],
   "source": [
    "testFSet = df_tensor[train_len:]\n",
    "testLSet = df_target[train_len:]"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n",
     "is_executing": false
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 74,
   "outputs": [],
   "source": [
    "predictionY = net(testFSet)"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n",
     "is_executing": false
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 75,
   "outputs": [
    {
     "data": {
      "text/plain": "<matplotlib.collections.PathCollection at 0x1d907a22088>"
     },
     "metadata": {},
     "output_type": "execute_result",
     "execution_count": 75
    },
    {
     "data": {
      "text/plain": "<Figure size 432x288 with 1 Axes>",
      "image/png": "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\n"
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "\n",
    "plt.scatter(predictionY.detach().numpy(),testLSet.detach().numpy())"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n",
     "is_executing": false
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "outputs": [],
   "source": [
    "realVal =testLSet.numpy()\n",
    "preVal = predictionY.detach().numpy()"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n",
     "is_executing": false
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "outputs": [],
   "source": [
    "\n"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n"
    }
   }
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 2
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython2",
   "version": "2.7.6"
  },
  "pycharm": {
   "stem_cell": {
    "cell_type": "raw",
    "source": [],
    "metadata": {
     "collapsed": false
    }
   }
  }
 },
 "nbformat": 4,
 "nbformat_minor": 0
}